/**
 * @file ControladorUsuario.java
 * Archivo que contiene la clase ControladorUsuario.java
 * 
 * @author ANASS BENALI
 */
package Controladores;

/**
 *
 * @author ANASS BENALI
 */
import ConexionBD.ConexionBD;
import java.sql.ResultSet;
import Interfaz.InterfazPrincipal;
import GestorUsuarios.Usuario;
import GestorUsuarios.UsuarioBD;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;


public class ControladorUsuario {
    
    private static ControladorUsuario Instancia = null; // new ControladorUsuario();
    
    /**
     * Constructor por defecto
     *@param void
     *@return void
     */
    
    private ControladorUsuario() {
     }
    
    /**
     * @param void
     * @return Instancia
     */
    public static ControladorUsuario getInstancia(){
        if(Instancia == null)
            Instancia = new ControladorUsuario();
        return Instancia;
    }
    
    /**
     * 
     * @return
     * @throws CloneNotSupportedException 
     */
    public Object clone() throws CloneNotSupportedException {
        throw new CloneNotSupportedException(); 
    }
    
    /**
     * 
     * @param Datos
     * @return 
     */
    
    public Boolean addUsuario(String[] Datos){
        
      
        Boolean gestor;
        
      if(Datos[6].equals("G")) {
            gestor = true;
        }
        else {
            gestor = false;
        }
        
        Usuario user = new Usuario(Datos[0], Datos[1], Datos[2], Datos[3], Datos[4], Datos[5], gestor);
        user = UsuarioBD.getInstancia().addUsuario(user);
        
        if(user!=null) {
          
            return true;
         } else {
          
            return false;
        }
    }
    
    /**
     * 
     * @param dniUsuario
     * @return
     * @throws SQLException 
     */
    public Usuario getUsuario(String dniUsuario ) throws SQLException{
        
       
        Usuario user = new Usuario();
        
        user = UsuarioBD.getInstancia().getUsuario(dniUsuario);
        
      
        return user;
        
    }
    
            
      /**
     * Funcion que verifica si el usuario puede acceder a la aplicacion o no
     * @param login
     * @param password
     * @return 
     */
    public static Usuario autentificarse(String login, String password){
        Usuario user=null;
        try {
            user = UsuarioBD.getInstancia().getlogin(login, password);
        } catch (SQLException ex) {
            //Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
        }
        return user;
    }
    
    
    
   
   
    /**
     * 
     * @param user
     * @return 
     */
    public Boolean updateUsuario(Usuario user) throws SQLException{
        
        
        user.setIdUsuario(UsuarioBD.getInstancia().getidUsuario(user.getDNI()));
        UsuarioBD.getInstancia().updateUsuario(user);
        
       
        
     return true;
        
    
   
    }
   /**
    * 
    * @param idUsuario
    * @return 
    */
   public Boolean deleteUsuario(String dniUsuario) throws SQLException {
      Boolean borrado = false;
      Usuario user;
      
      user = UsuarioBD.getInstancia().getUsuario(dniUsuario);
      
      if(UsuarioBD.getInstancia().deleteUsuario(user.getIdUsuario())){
          borrado = true;
      }       
      
      
      
      
      return borrado;
    }
  
       
  /**
   * 
   * @param user
   * @param nombreUsuario
   * @param apellidosUsuario
   * @param dniUsuario
   * @param correoUsuario
   * @param gestor
   * @param login
   * @param contrasena
   * @return 
   */

public Boolean setUsuario(Usuario user, String nombreUsuario, String apellidosUsuario, String dniUsuario, String correoUsuario, Boolean gestor, String login, String contrasena){
    
    Boolean salida = true;
    
    String consulta ="UPDATE Usuario SET Nombre='" + nombreUsuario+ 
                "', Apellidos='" + apellidosUsuario + 
                "', DNI='" + dniUsuario +
                "', Correo='" + correoUsuario +
                "', Login='" + login +
                "', Contrasena'" + contrasena +
                "', tipoUsuario='";
    
                if(gestor){
                    consulta+="G";
               }
                else {
                    consulta+="E";
                }
                
                 consulta+="' WHERE idUsuario=" + user.getIdUsuario().toString() + ";";
        
        try {
            ConexionBD.getInstancia().conectar();
            ConexionBD.getInstancia().actualizar(consulta);
            ConexionBD.getInstancia().desconectar();
        } catch (SQLException ex) {
            System.out.println(ex);
            salida=false;
        }
        return salida;
    } 

}
   

 

